<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>回调函数形式的ref</title>
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="">
</head>

<body>

    <div id="react"> </div>
    <!--准备好一个容器-->
    <div id="test"></div>
    <!--引入react核心库,核心库必须先引入-->
    <script type="text/javascript" src="./js/react.development.js"></script>
    <!--引入react-dom, 用于支持react操作DOM-->
    <script type="text/javascript" src="./js/react-dom.development.js"></script>
    <!--引入babel,用于将jsx转为js-->
    <script type="text/javascript" src="./js/babel.min.js"></script>

    <!-- 引入prop-types，用于对组件标签属性进行限制 -->
    <script type="text/javascript" src="./js/prop-types.js"></script>

    <script type="text/babel">
        //定义组件
        class Wcomponent extends React.Component{
          
          //React.createRef调用后可以返回一个容器，该容器可以存储被ref所标识的节点
          //Wcomponent实例对象身上创建一个ref容器
          //代码在执行在ref时，会把当前节点存储在myRef的容器中
         myRef =React.createRef()
         myRefT =React.createRef()


         //自定义赋值函数
         getDisplayOne=()=>{
          console.log(this.myRef)
          alert(this.myRef.current.value) //current是自带的
         }

        getDisplayTwo=()=>{  
         console.log(this.myRefT.current) //<button></button>
        }

           //代码在执行在ref时，会把当前节点存储在myRef的容器中
            render() {
                return(
                    <div>
                     <input ref={this.myRef} onBlur={this.getDisplayOne} type="text" className="spacing"/>
                     <button ref={this.myRefT} onClick={this.getDisplayTwo}>点击</button>
                    </div>
                )  
            }
        }
        //渲染组件
        ReactDOM.render(<Wcomponent/>,document.getElementById("react"))


    </script>
    <style>
        .spacing {
            margin: 15px;
        }
    </style>

</body>

</html>